﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using FastLibrary.Criptografia;
using FastDATA;

namespace CursoUNICEUB.Account
{
    public partial class ChangePassword : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ChangePasswordPushButton_Click(object sender, EventArgs e)
        {
            try
            {
                //Verificando se existe algum aluno logado no sistema. Caso não esteja logado, vai para a página Default.
                if (Session["aluno"] == null)
                    
                Util.showMessage(this, "Aluno não encontrado.", "../Default.aspx", "erro");  
                
                //Instanciando o aluno.
                DEAluno aluno = Session["aluno"] as DEAluno;

                //Criando a conexão com o banco
                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    //Criando a expressão SQL que vai buscar os alunos que tenham a senha igual ao "Current Password" e o código igual ao código do aluno na sessão.
                    //Cript.getMD5Hash está criptografando o current password.
                    var q = from a in banco.DEAlunos
                            where a.Senha.Equals(Cript.getMD5Hash(this.txtCurrentPassword.Text)) &&
                                  a.Codigo.Equals(aluno.Codigo)
                            select a;

                    //Executando o SQL criado anteriormente e pegando apenas 1 aluno.
                    aluno = q.FirstOrDefault();
                    //Verificando se o aluno foi entrado. Se foi encontrado, ele é != null.
                    if (aluno != null)
                    {
                        //Altera a senha temporariamente
                        aluno.Senha = Cript.getMD5Hash(this.txtNewPassword.Text);

                        //Altera a senha permanentemente, alterando no banco de dados.
                        banco.SubmitChanges();

                        Util.showMessage(this, "Senha alterada com sucesso.", "../Default.aspx", "erro");
                    }
                    else
                        Util.showMessage(this, "Senha incorreta. Por favor, tente novamente.");
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Houve um problema no momento de alterar a senha. Por favor, tente mais tarde.");
            }
        }
    }
}
